package com.Lacia.emsserver.pojo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.Instant;

/**
 * @author 万里花
 * @date 2024/6/6 10:55
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class BmsClusterMyData {


    /** 时间戳 */
    @JsonFormat(shape = JsonFormat.Shape.NUMBER_INT)
    @JsonProperty("timestamp")
    private Instant timestamp;

    /** 电池簇SOC */
    private Double cluSoc;

    /** 电池簇SOH */
    private Double cluSoh;

    /** 总电压 */
    private Double cluVol;

    /** 电流 */
    private Double cluCur;

    /** 最高单体电压 */
    private Double cellMaxVol;

    /** 最低单体电压 */
    private Double cellMinVol;

    /** 最高温度 */
    private Integer cellMaxTem;

    /** 最低温度 */
    private Integer cellMinTem;

    /** 实时功率 */
    private Double cluRtPower;

    /** 电池簇运行状态 (0:停机，1:充电，2:放电，3:待机，4:故障) */
    private Integer cluRunStatus;

    /** 累计充电电量 */
    private Double cluChaElecTotal;

    /** 累计放电电量 */
    private Double cluDischgElecTotal;

    /** 单次充电电量 */
    private Double lastChaElec;

    /** 单次放电电量 */
    private Double lastDischgElec;

    /** 可充电量 */
    private Double cluRechaElec;

    /** 可放电量 */
    private Double cluRedischgElec;

    /** 堆号 */
    private Integer arrNum;

    /** 簇号 */
    private Integer cluNum;

    /** BMS状态 (0:正常，1:预警，2:告警，3:保护) */
    private Integer bmsStatus;

    /** 簇内单体平均电压 */
    private Double cluCellAveVol;

    /** 最高SOC */
    private Double cellMaxSoc;

    /** 最低SOC */
    private Double cellMinSoc;

    /** 最高SOH */
    private Double cellMaxSoh;

    /** 最低SOH */
    private Double cellMinSoh;

    /** 正对地绝缘电值 */
    private Double cluPosres;

    /** 负对地绝缘电阻 */
    private Double cluNegres;

    /** 最高单体电压编号 */
    private Integer cellMaxVolNum;

    /** 最低单体电压编号 */
    private Integer cellMinVolNum;

    /** 最高温度编号 */
    private Integer cellMaxTemNum;

    /** 最低温度编号 */
    private Integer cellMinTemNum;

    /** 单体电压总和 */
    private Double cellVolTotal;

    /** 最大放电电流 */
    private Double maxDischgArrCur;
}
